package com.xbongbong.paas.service.stage;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.businesstage.pojo.dto.StageJumpDealDTO;
import com.xbongbong.pro.businesstage.pojo.dto.StageJumpValidateDTO;
import com.xbongbong.pro.businesstage.pojo.vo.StageJumpDealVO;

/**
 * @Auther: yingjianfeng
 * @Date: 2021/12/3 11:10
 * @Description: 阶段跳转
 */
public interface StageJumpHandle {

    /**
     * 阶段类型【0普通流程阶段、1结束阶段-成功、2结束阶段-失败】
     *
     * @return
     * @See com.xbongbong.paas.enums.StageTypeEnum
     */
    Integer type();

    /**
     * description:  跳入
     * date: 2021/12/3 3:27 下午
     *
     * @Author yingjf
     */
    StageJumpDealVO jumpDeal(StageJumpDealDTO stageJumpDealDTO) throws XbbException;

    /**
     * description:  校验
     * date: 2021/12/3 4:28 下午
     *
     * @Author yingjf
     */
    void validate(StageJumpValidateDTO stageJumpValidateDTO) throws XbbException;

    /**
     * 获取阶段进入比例
     * @param dataId 数据id
     * @param corpid 公司id
     * @param formId 表单id
     * @param stageId 进入阶段的id
     * @param saasMark saas标志
     * @param businessType 业务类型
     * @param outProportion 进入阶段的跳出比例
     * @return 返回比例
     * @throws XbbException
     */
    Integer getJumpIntoProportion(Long dataId, String corpid, Long formId, Long stageId, Integer saasMark, Integer businessType, Integer outProportion) throws XbbException;
}
